package trabajo.sw;


import clases.domain.Bodega;
import clases.domain.DetalleEspecificacion;
import clases.domain.Empleado;
import clases.domain.EspecificacionTecnica;
import clases.domain.Pieza;
import clases.domain.Modelo;
import clases.domain.Version;
import ejb.session.EspecificacionTecnicaLocal;
import ejb.session.MantenedoresLocal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import trabajo.to.PiezaEspecificacionTO;
import java.sql.Timestamp;

@ManagedBean
@ViewScoped
public class GenerarEspecificacionTecnicaMB {

    private List<Modelo> modelos;
    private List<Version> listaVersionBuscar;
    private Pieza[] selectedPieza;  
    private Version versionSelect;
    private List<PiezaEspecificacionTO> piezas;
     
    //private PiezaDataModal mediumPiezaModel;
    
    @EJB private MantenedoresLocal piezaEjb;
    @EJB private EspecificacionTecnicaLocal espTecnicaEjb;
    public void buscarVersion(List<Version> listaversion){
       if(modelos!=null){
           System.out.println("buscarVersion");
          listaVersionBuscar = listaversion;
       }
    }
    public void buscarPiezas(Version version){
       
        System.out.println("numeroVersion "+version.getNumVersion());
        versionSelect = version;
        List <Pieza> listaPiezas = piezaEjb.getListPiezasByVersion(version.getNumVersion());
        piezas = new ArrayList<PiezaEspecificacionTO>();
        for(Pieza pieza : listaPiezas) {
           PiezaEspecificacionTO piezaEspecificacion = new PiezaEspecificacionTO();
           piezaEspecificacion.setNumPieza(pieza.getNumPieza());
           piezaEspecificacion.setNombrePieza(pieza.getNombrePieza());
           piezaEspecificacion.setNumVersion(version.getNumVersion());
           piezaEspecificacion.setDescripcion(pieza.getDescripcion());
           piezaEspecificacion.setCantidad(0);
           piezaEspecificacion.setNumBodega(pieza.getBodega().getNumBodega());
           piezas.add(piezaEspecificacion);
        }
        if(piezas!=null){
           System.out.println("listadoPieza "+piezas.get(0).getNombrePieza());
        }
        
        //setMediumPiezaModel(new PiezaDataModal(listadoPieza));   
    }
    public List<Modelo> getModelos() {
        
        if(modelos==null){
           modelos = piezaEjb.getListModelos();
        }
        return modelos;
    }
    public void generarEspecificacion(){
        Date fecha=new Date();
        EspecificacionTecnica especificacionTecnica = new EspecificacionTecnica();
        especificacionTecnica.setVersion(versionSelect);
        especificacionTecnica.setFecha(new Timestamp(fecha.getTime()));
        Empleado empleado = new Empleado();
        especificacionTecnica.setEmpleado(empleado);
        List<DetalleEspecificacion> listDetalleEspecificacionTecnica = new ArrayList<DetalleEspecificacion>();
        
        for(PiezaEspecificacionTO piezaEspecificacion : piezas) {
           System.out.println(piezaEspecificacion.getCantidad());
           if(piezaEspecificacion.getCantidad()>0){
              DetalleEspecificacion detalleEspecificacionTecnica  = new DetalleEspecificacion();
              
              Pieza pieza = new Pieza();
              pieza.setDescripcion(piezaEspecificacion.getDescripcion());
              pieza.setNombrePieza(piezaEspecificacion.getNombrePieza());
              Bodega bodega = new Bodega();
              bodega.setNumBodega(piezaEspecificacion.getNumBodega());
              pieza.setBodega(bodega);
              pieza.setNumPieza(piezaEspecificacion.getNumPieza());
              detalleEspecificacionTecnica.setCantidad(piezaEspecificacion.getCantidad());
              detalleEspecificacionTecnica.setEspecificacionTecnica(especificacionTecnica);
              detalleEspecificacionTecnica.setPiezas(pieza);
              
              listDetalleEspecificacionTecnica.add(detalleEspecificacionTecnica);
              
           }
        }
         espTecnicaEjb.generaEspecificacionTecnica(especificacionTecnica,listDetalleEspecificacionTecnica);
    }
   
    public void setModelos(List<Modelo> modelos) {
        this.modelos = modelos;
    }

    public List<Version> getListaVersionBuscar() {
        return listaVersionBuscar;
    }

    public void setListaVersionBuscar(List<Version> listaVersionBuscar) {
        this.listaVersionBuscar = listaVersionBuscar;
    }

    
    public Pieza[] getSelectedPieza() {
        return selectedPieza;
    }

    public void setSelectedPieza(Pieza[] selectedPieza) {
        this.selectedPieza = selectedPieza;
    }

    public List<PiezaEspecificacionTO> getPiezas() {
        return piezas;
    }

    public void setPiezas(List<PiezaEspecificacionTO> piezas) {
        this.piezas = piezas;
    }

    public Version getVersionSelect() {
        return versionSelect;
    }

    public void setVersionSelect(Version versionSelect) {
        this.versionSelect = versionSelect;
    }
}
